package com.qidian.permission.controller;

import com.qidian.permission.entity.Permission;
import com.qidian.permission.service.PermissionService;
import com.qidian.permission.util.entity.PerResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @Author 18林梦雅
 * @Company 起点编程
 * @Time 2023/10/18 20:15
 * @Description
 */

@RestController
@RequestMapping("/permission")
@CrossOrigin
public class PermissionController {
    @Autowired
  private   PermissionService permissionService;

    /**
     * 传入后端的对应的参数,将原先的数据进行删除,然后再重新添加
     * @param userId
     * @param permissionId
     * @return
     */
    @GetMapping("/settingUserPermission")
    public PerResult settingUserPermission(Long userId,Long [] permissionId){
        return permissionService.settingUserPermission(userId,permissionId);
    };


    /**
     * 获取当前用户的权限信息
     * @param userId
     * @return
     */
    @GetMapping("/queryByUserId")
    public PerResult queryByUserId(Long userId){
        return permissionService.queryByUserId(userId);
    }


    /**
     * 获取所有的权限信息
     * @return
     */
    @GetMapping("/list")
    public PerResult list(){
        return permissionService.selectAll();
    }




    /**
     * 请求方法： GET
     * url: /permission/queryByParentId
     * 参数： parentId
     * 响应： {code:200,msg:"",data:[查询的数据列表]}
     * @param parentId
     * @return
     */
    @GetMapping("/queryByParentId")
  public PerResult  queryByParentId(Long parentId){
        System.out.println("++++++++++++++++++++++++++++++");
        System.out.println(parentId);
    return permissionService.selectAllByParentId(parentId);
  }



    /**
     * 需求:传入父权限parent_id
     */




    /**
     * 获取当前角色的权限信息
     * @param roleId
     * @return
     */
    @GetMapping("/queryByRoleId")
    public PerResult queryByRoleId(Long roleId){
        return permissionService.queryByRoleId(roleId);
    }

    @GetMapping("/settingRolePermission")
    public PerResult settingRolePermission(Long roleId,Long [] permissionId){
        return permissionService.settingRolePermission(roleId,permissionId);
    };


    /*请求方法： post
    url: /permission/save
    参数 :
     格式： json
     内容：｛权限需要的基本数据｝
    响应：
     成功：{code:200,msg:"",data:null}
     重名： {code:300,msg:"",data:null}
     失败：{code:500,msg:"",data:null}
 */
    @PostMapping("/save")
    public PerResult save(@RequestBody Permission permission){
        return permissionService.addPermission(permission);
    }


    /**
     * 请求方法： GET
     * url : /permission/get
     * 参数： permissionId
     * 响应 : {code:200,msg:"",data:｛权限对象｝}
     * @return
     */
    @GetMapping("/get")
    public PerResult get( Long permissionId){
        return permissionService.selectByPermissionId(permissionId);
    }

    /**
     * 请求方法： PUT/POST
     * url : /permission/update
     * 参数：
     *  类型：json
     *  内容：｛权限信息的所有属性,不包含创建时间｝
     * 响应：
     *  成功：{code:200,msg:"",data:null}
     *  重名： {code:300,msg:"",data:null}
     *  失败：{code:500,msg:"",data:null}
     * @param permission
     * @return
     */
    @PutMapping("/update")
    public PerResult update(@RequestBody Permission permission){
        return permissionService.updateByPermissionId(permission);
    }

    @DeleteMapping("/deletes")
    public PerResult deleteSelect( Long[] permissionId){
        System.out.println(permissionId+"+++++++++++++++++++++++++++++++++++++++++++++++");
        return permissionService.deleteUpdateSelect(permissionId);
    };




}
